/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.trabajo.controlador;

import com.trabajo.dao.ClienteDAO;
import com.trabajo.dao.EmpleadoDAO;
import com.trabajo.dao.ProductoDAO;
import com.trabajo.dao.fechaDAO;
import com.trabajo.entidad.Cliente;
import com.trabajo.entidad.Detalle;
import com.trabajo.entidad.Empleado;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;

/**
 *
 * @author jerick
 */
public class NewServlet extends HttpServlet {
ProductoDAO pdao;
EmpleadoDAO edao;
ClienteDAO cdao;

@Override
    public void destroy() {
    //    pdao.closeEntityManager();
       edao.closeEntityManager();
       cdao.closeEntityManager();
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        pdao=new ProductoDAO();
        edao=new EmpleadoDAO();
        cdao=new ClienteDAO();
    }
    
    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    static String contra="";
    static String usuario="";
    static String ruc="";
    List<Detalle> lista_detalle;
    static boolean encontrado=false;
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       
            String operacion=request.getParameter("operacion");
            if(operacion.equalsIgnoreCase("inicio")){
                
            usuario=request.getParameter("usuario");
            contra=request.getParameter("contrasena");
            List<Empleado> q;
                q = edao.buscarEmpleado(usuario,contra);
            if(q.isEmpty()) {
                
                //int mes=Calendar.getInstance().getTime().getYear();
                //JOptionPane.showMessageDialog(null, "fecha --- " + fecha1) ;
                
                response.sendRedirect("error.jsp");
            }
            else{
               response.sendRedirect("segunda_pagina.jsp");
            }
        }
            //nuevo_cliente
        else if(operacion.equalsIgnoreCase("nuevo_cliente")){
            ruc=request.getParameter("txtRuc");
            String apellidos=request.getParameter("txtApellido");
            String nombre=request.getParameter("txtNombres");//
            String direccion=request.getParameter("txtDireccion");////
            
            if (ruc.equals("")||apellidos.equals("") || nombre.equals(""))
            {
                request.setAttribute("nvocliente", ruc);
                RequestDispatcher rd=request.getRequestDispatcher("/registrar_cliente.jsp");
                rd.forward(request,response);
            }
            else
            {
                Cliente c=new Cliente();
            c.setApeCli(apellidos);
            c.setDirCli(direccion);
            c.setNomCli(nombre);
            c.setRuc(ruc);
         if (!encontrado){
             
               if(cdao.insertarCliente(c))
            {
                
                fechaDAO fecha =new fechaDAO();
                String fecha1 ="";
                fecha1=fecha.getFecha();
                request.setAttribute("fecha_pedido", fecha1);
                request.setAttribute("num_ruc", ruc);
                request.setAttribute("empleado", usuario);
                //contra
                //request.setAttribute("nombre_cliente", nombres);
                RequestDispatcher rd=request.getRequestDispatcher("/registrar_pedido1.jsp");
                rd.forward(request,response);
           }
        else
            {
          //      JOptionPane.showMessageDialog(null, contra);
                response.sendRedirect("error.jsp");
            }
          }
             //JOptionPane.showMessageDialog(null, "no lo encontro agregamosssssssssssss");
         }
        }
        else if(operacion.equalsIgnoreCase("nuevo_pedido")){
            //JOptionPane.showMessageDialog(null, "no registro al Cliente");
                fechaDAO fecha =new fechaDAO();
                String fecha1 ="";
                fecha1=fecha.getFecha();
                if (ruc.equals(""))
                {
                    ruc=request.getParameter("txtRuc");
                }
                request.setAttribute("fecha_pedido", fecha1);
                request.setAttribute("num_ruc", ruc);
                request.setAttribute("empleado", usuario);
                RequestDispatcher rd=request.getRequestDispatcher("/registrar_pedido1.jsp");
                rd.forward(request,response);
            //response.sendRedirect("registrar_pedido1.jsp");
       }
        
        else if(operacion.equalsIgnoreCase("buscar_cliente")){
            //String ruc=request.getParameter("txtRuc");
            
            if (cdao.buscar_cliente(ruc)==null)
            {
            request.setAttribute("nvocliente", ruc);
           RequestDispatcher rd=request.getRequestDispatcher("/registrar_cliente.jsp");
           rd.forward(request,response);
            }
            else
            {
                //JOptionPane.showMessageDialog(null, "estamos donde se hace true");
                encontrado=true;
                request.setAttribute("cliente", cdao.buscar_cliente(ruc));
           RequestDispatcher rd=request.getRequestDispatcher("/cliente_encontrado.jsp");
           rd.forward(request,response);
            
            }
           
       }
           
      /*  response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            // TODO output your page here. You may use following sample code. 
            PrintWriter out = response.getWriter();
             out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet NewServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet NewServlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");*/
            
        
        //finally {            
        //    out.close();
        //}
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
